package shared;

import java.rmi.*;
import java.util.concurrent.CopyOnWriteArrayList;

public interface RMIInterface extends Remote {

    VectorClock SendPositions(String nick, boolean moveLeft, boolean moveRight, boolean moveUp,
            boolean moveDown, boolean shoot, int mouseX, int mouseY, VectorClock vector) throws RemoteException;

    RMIPair<Integer, VectorClock> Login(String nick) throws RemoteException;

    VectorClock Logout(String nick, VectorClock vector) throws RemoteException;

    RMIPair<CopyOnWriteArrayList<Player>, VectorClock> GetPlayersPos(VectorClock vector) throws RemoteException;

    RMIPair<CopyOnWriteArrayList<Bullet>, VectorClock> GetBulletsPos(VectorClock vector) throws RemoteException;

    RMIPair<Integer, Integer> GetInfo(int user) throws RemoteException;

    RMIPair<Integer, int[]> GetTable(int user) throws RemoteException;
    
    void SendInfoToRestNodes(int number, int info, String whoami) throws RemoteException;
    
    void SendTableToRestNodes(int number, int[] info, String whoami) throws RemoteException;
    
    public int GetNodesNr() throws RemoteException;

}
